[INFO] cloning repository https://github.com/travisbrown/cancelculture
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/travisbrown/cancelculture" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftravisbrown%2Fcancelculture", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftravisbrown%2Fcancelculture'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2468ce1af2575f232800d05633a3f15cf9361611
[INFO] fixing travisbrown/cancelculture against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftravisbrown%2Fcancelculture" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/travisbrown/cancelculture
[INFO] finished tweaking git repo https://github.com/travisbrown/cancelculture
[INFO] tweaked toml for git repo https://github.com/travisbrown/cancelculture written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/travisbrown/cancelculture on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/travisbrown/cancelculture already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 76050ace1e8b4a7df8f3fbf2320d304cf0a06521030d43b159570bfa5ea94334
[INFO] running `Command { std: "docker" "start" "76050ace1e8b4a7df8f3fbf2320d304cf0a06521030d43b159570bfa5ea94334", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "76050ace1e8b4a7df8f3fbf2320d304cf0a06521030d43b159570bfa5ea94334" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "76050ace1e8b4a7df8f3fbf2320d304cf0a06521030d43b159570bfa5ea94334", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "76050ace1e8b4a7df8f3fbf2320d304cf0a06521030d43b159570bfa5ea94334" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr] note: Switching to Edition 2021 will enable the use of the version 2 feature resolver in Cargo.
[INFO] [stderr] This may cause some dependencies to be built with fewer features enabled than previously.
[INFO] [stderr] More information about the resolver changes may be found at https://doc.rust-lang.org/nightly/edition-guide/rust-2021/default-cargo-resolver.html
[INFO] [stderr] When building the following dependencies, the given features will no longer be used:
[INFO] [stderr] 
[INFO] [stderr]   getrandom v0.3.4 removed features: std
[INFO] [stderr]   phf_shared v0.10.0 removed features: default
[INFO] [stderr]   rand v0.8.5 removed features: small_rng
[INFO] [stderr]   tokio v1.48.0 removed features: windows-sys
[INFO] [stderr]   zerocopy v0.8.31 (as host dependency) removed features: derive, zerocopy-derive
[INFO] [stderr] 
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]     Checking itoa v1.0.15
[INFO] [stderr]    Compiling find-msvc-tools v0.1.5
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]     Checking value-bag v1.12.0
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking signal-hook-registry v1.4.7
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]    Compiling siphasher v0.3.11
[INFO] [stderr]     Checking tracing-core v0.1.35
[INFO] [stderr]    Compiling getrandom v0.1.16
[INFO] [stderr]     Checking writeable v0.6.2
[INFO] [stderr]     Checking log v0.4.29
[INFO] [stderr]     Checking litemap v0.8.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]     Checking simd-adler32 v0.3.8
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]     Checking openssl-probe v0.1.6
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking ryu v1.0.20
[INFO] [stderr]     Checking parking v2.2.1
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking tracing v0.1.43
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling phf_shared v0.8.0
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling aws-lc-rs v1.15.2
[INFO] [stderr]     Checking rustls-pki-types v1.13.1
[INFO] [stderr]    Compiling siphasher v1.0.1
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]     Checking ipnet v2.11.0
[INFO] [stderr]     Checking deranged v0.5.5
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling phf_shared v0.10.0
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling proc-macro-hack v0.5.20+deprecated
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]    Compiling time-macros v0.2.24
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling icu_segmenter_data v1.5.1
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]     Checking flate2 v1.1.5
[INFO] [stderr]     Checking litemap v0.7.5
[INFO] [stderr]    Compiling rustls v0.23.35
[INFO] [stderr]     Checking writeable v0.5.5
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]    Compiling rand_core v0.5.1
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling cc v1.2.49
[INFO] [stderr]    Compiling cookie v0.16.2
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking mac v0.1.1
[INFO] [stderr]     Checking precomputed-hash v0.1.1
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]    Compiling rand_pcg v0.2.1
[INFO] [stderr]     Checking futf v0.1.5
[INFO] [stderr]     Checking anstyle-parse v0.2.7
[INFO] [stderr]     Checking core_maths v0.1.1
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking digest v0.9.0
[INFO] [stderr]     Checking piper v0.2.4
[INFO] [stderr]    Compiling cookie v0.18.1
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking iana-time-zone v0.1.64
[INFO] [stderr]     Checking dtoa v1.0.10
[INFO] [stderr]     Checking colorchoice v1.0.4
[INFO] [stderr]     Checking compression-core v0.4.31
[INFO] [stderr]     Checking phf v0.10.1
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking dtoa-short v0.3.5
[INFO] [stderr]     Checking tendril v0.4.3
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking async-executor v1.13.3
[INFO] [stderr]     Checking compression-codecs v0.4.35
[INFO] [stderr]     Checking time v0.3.44
[INFO] [stderr]     Checking async-lock v3.4.1
[INFO] [stderr]     Checking rustls-native-certs v0.8.2
[INFO] [stderr]    Compiling libsqlite3-sys v0.35.0
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-mac v0.11.0
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking block-buffer v0.9.0
[INFO] [stderr]     Checking nodrop v0.1.14
[INFO] [stderr]     Checking matches v0.1.10
[INFO] [stderr]     Checking iri-string v0.7.9
[INFO] [stderr]     Checking winnow v0.5.40
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]     Checking clap_builder v4.5.53
[INFO] [stderr]     Checking sha-1 v0.9.8
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking rustls-pemfile v1.0.4
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking servo_arc v0.1.1
[INFO] [stderr]     Checking hmac v0.11.0
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]    Compiling cmake v0.1.56
[INFO] [stderr]     Checking kv-log-macro v1.0.7
[INFO] [stderr]     Checking csv-core v0.1.13
[INFO] [stderr]     Checking bit_field v0.10.3
[INFO] [stderr]     Checking winnow v0.7.14
[INFO] [stderr]     Checking sync_wrapper v0.1.2
[INFO] [stderr]     Checking lebe v0.5.3
[INFO] [stderr]     Checking thin-slice v0.1.1
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]     Checking getopts v0.2.24
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking sha-1 v0.10.1
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking toml_datetime v0.7.3
[INFO] [stderr]     Checking filetime v0.2.26
[INFO] [stderr]     Checking serde_spanned v1.0.3
[INFO] [stderr]     Checking toml_writer v1.0.4
[INFO] [stderr]     Checking ego-tree v0.6.3
[INFO] [stderr]     Checking data-encoding v2.9.0
[INFO] [stderr]     Checking rusqlite v0.37.0
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling aws-lc-sys v0.35.0
[INFO] [stderr]     Checking file_diff v1.0.0
[INFO] [stderr]     Checking simplelog v0.12.2
[INFO] [stderr]     Checking toml_parser v1.0.4
[INFO] [stderr]    Compiling cssparser v0.27.2
[INFO] [stderr]    Compiling html5ever v0.26.0
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking xattr v1.6.1
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]     Checking toml v0.9.8
[INFO] [stderr]     Checking tar v0.4.44
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking async-global-executor v2.4.1
[INFO] [stderr]     Checking async-std v1.13.2
[INFO] [stderr]    Compiling zerocopy-derive v0.8.31
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling yoke-derive v0.7.5
[INFO] [stderr]    Compiling zerovec-derive v0.10.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling icu_provider_macros v1.5.0
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]     Checking tinystr v0.7.6
[INFO] [stderr]     Checking icu_locid v1.5.0
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking yoke v0.7.5
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking zerovec v0.10.4
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking icu_collections v1.5.0
[INFO] [stderr]     Checking icu_provider v1.5.0
[INFO] [stderr]     Checking clap v4.5.53
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking exr v1.74.0
[INFO] [stderr]     Checking icu_segmenter v1.5.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking string_cache v0.8.9
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking toml_edit v0.19.15
[INFO] [stderr]    Compiling rand_chacha v0.2.2
[INFO] [stderr]    Compiling rand v0.7.3
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking async-compression v0.4.36
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]    Compiling phf_generator v0.8.0
[INFO] [stderr]    Compiling phf_codegen v0.8.0
[INFO] [stderr]     Checking futures-locks v0.7.1
[INFO] [stderr]    Compiling phf_macros v0.8.0
[INFO] [stderr]     Checking webdriver v0.53.0
[INFO] [stderr]     Checking tryhard v0.5.2
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]    Compiling phf_generator v0.10.0
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling phf_codegen v0.10.0
[INFO] [stderr]    Compiling selectors v0.22.0
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]     Checking leaky-bucket v1.1.2
[INFO] [stderr]     Checking toml v0.7.8
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking phf v0.8.0
[INFO] [stderr]     Checking tokio-test v0.4.4
[INFO] [stderr]    Compiling markup5ever v0.11.0
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking scraper v0.14.0
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking hyper-util v0.1.19
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking egg-mode v0.16.1
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.26
[INFO] [stderr]     Checking rustls-webpki v0.103.8
[INFO] [stderr]     Checking egg-mode-extras v0.4.0
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking fantoccini v0.22.0
[INFO] [stderr]     Checking wayback-rs v0.7.0
[INFO] [stderr]     Checking cancel-culture v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/twcli.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/twshoot.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/canonical.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/wbsearch.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/availability.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/wbstore.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/link.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/wbmc.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/twcc.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/wbsave.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/twblocks.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/details.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/wbmd.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/report.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/cdxdl.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/wbparse.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating tests/browser.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/rtcounts.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/bin/twsearch.rs from 2018 edition to 2021
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 22s
[INFO] [stderr] crater-edition-check: cancel-culture v0.1.0 (/opt/rustwide/workdir) updating edition from 2018 to 2021
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking phf_shared v0.10.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]     Checking phf v0.10.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand_chacha v0.2.2
[INFO] [stderr]    Compiling rand v0.7.3
[INFO] [stderr]    Compiling phf_generator v0.8.0
[INFO] [stderr]    Compiling phf_codegen v0.8.0
[INFO] [stderr]    Compiling phf_macros v0.8.0
[INFO] [stderr]    Compiling selectors v0.22.0
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling phf_generator v0.10.0
[INFO] [stderr]    Compiling phf_codegen v0.10.0
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]    Compiling markup5ever v0.11.0
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking async-compression v0.4.36
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]     Checking futures-locks v0.7.1
[INFO] [stderr]     Checking tryhard v0.5.2
[INFO] [stderr]     Checking leaky-bucket v1.1.2
[INFO] [stderr]     Checking phf v0.8.0
[INFO] [stderr]     Checking cssparser v0.27.2
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking tokio-test v0.4.4
[INFO] [stderr]     Checking html5ever v0.26.0
[INFO] [stderr]     Checking scraper v0.14.0
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking hyper-util v0.1.19
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking egg-mode v0.16.1
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking reqwest v0.12.26
[INFO] [stderr]     Checking fantoccini v0.22.0
[INFO] [stderr]     Checking wayback-rs v0.7.0
[INFO] [stderr]     Checking egg-mode-extras v0.4.0
[INFO] [stderr]     Checking cancel-culture v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated function `itertools::unfold`: Use [std::iter::from_fn](https://doc.rust-lang.org/std/iter/fn.from_fn.html) instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:24:33
[INFO] [stdout]    |
[INFO] [stdout] 24 |             Box::new(itertools::unfold(from, move |state| {
[INFO] [stdout]    |                                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `itertools::unfold`: Use [std::iter::from_fn](https://doc.rust-lang.org/std/iter/fn.from_fn.html) instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:33:33
[INFO] [stdout]    |
[INFO] [stdout] 33 |             Box::new(itertools::unfold(from, move |state| {
[INFO] [stdout]    |                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `itertools::unfold`: Use [std::iter::from_fn](https://doc.rust-lang.org/std/iter/fn.from_fn.html) instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:24:33
[INFO] [stdout]    |
[INFO] [stdout] 24 |             Box::new(itertools::unfold(from, move |state| {
[INFO] [stdout]    |                                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `itertools::unfold`: Use [std::iter::from_fn](https://doc.rust-lang.org/std/iter/fn.from_fn.html) instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:33:33
[INFO] [stdout]    |
[INFO] [stdout] 33 |             Box::new(itertools::unfold(from, move |state| {
[INFO] [stdout]    |                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::succ`: use `succ_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/search.rs:64:61
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     Self::new(&self.screen_name, &day, &day.succ())
[INFO] [stdout]    |                                                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::DateTime::<Tz>::date`: Use `date_naive()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:50:44
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let user_created = user.created_at.date().naive_utc();
[INFO] [stdout]    |                                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::DateTime::<Tz>::date`: Use `date_naive()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 |             .date()
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::succ`: use `succ_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:78:27
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 &chunk[0].succ(),
[INFO] [stdout]    |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::succ`: use `succ_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/search.rs:64:61
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     Self::new(&self.screen_name, &day, &day.succ())
[INFO] [stdout]    |                                                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::DateTime::<Tz>::date`: Use `date_naive()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:50:44
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let user_created = user.created_at.date().naive_utc();
[INFO] [stdout]    |                                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::DateTime::<Tz>::date`: Use `date_naive()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 |             .date()
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::succ`: use `succ_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:78:27
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 &chunk[0].succ(),
[INFO] [stdout]    |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/parser.rs:58:17
[INFO] [stdout]    |
[INFO] [stdout] 58 |             Utc.timestamp_millis(timestamp),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/parser.rs:58:17
[INFO] [stdout]    |
[INFO] [stdout] 58 |             Utc.timestamp_millis(timestamp),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::succ`: use `succ_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:25:32
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 *state = state.succ();
[INFO] [stdout]    |                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::pred`: use `pred_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:34:32
[INFO] [stdout]    |
[INFO] [stdout] 34 |                 *state = state.pred();
[INFO] [stdout]    |                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]    --> src/browser/twitter/parser.rs:448:17
[INFO] [stdout]     |
[INFO] [stdout] 448 |             Utc.timestamp_millis(1501184729657),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::succ`: use `succ_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:25:32
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 *state = state.succ();
[INFO] [stdout]    |                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::pred`: use `pred_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:34:32
[INFO] [stdout]    |
[INFO] [stdout] 34 |                 *state = state.pred();
[INFO] [stdout]    |                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/util/sqlite.rs:27:31
[INFO] [stdout]    |
[INFO] [stdout] 27 |         Ok(SQLiteDateTime(Utc.timestamp_millis(ts)))
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/util/sqlite.rs:27:31
[INFO] [stdout]    |
[INFO] [stdout] 27 |         Ok(SQLiteDateTime(Utc.timestamp_millis(ts)))
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDate::from_ymd`: use `from_ymd_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:662:24
[INFO] [stdout]     |
[INFO] [stdout] 662 |             NaiveDate::from_ymd(2019, 9, 16).and_hms(23, 32, 35),
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::and_hms`: use `and_hms_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:662:46
[INFO] [stdout]     |
[INFO] [stdout] 662 |             NaiveDate::from_ymd(2019, 9, 16).and_hms(23, 32, 35),
[INFO] [stdout]     |                                              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDate::from_ymd`: use `from_ymd_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:673:24
[INFO] [stdout]     |
[INFO] [stdout] 673 |             NaiveDate::from_ymd(2019, 11, 13).and_hms(17, 6, 29),
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::and_hms`: use `and_hms_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:673:47
[INFO] [stdout]     |
[INFO] [stdout] 673 |             NaiveDate::from_ymd(2019, 11, 13).and_hms(17, 6, 29),
[INFO] [stdout]     |                                               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDate::from_ymd`: use `from_ymd_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:684:24
[INFO] [stdout]     |
[INFO] [stdout] 684 |             NaiveDate::from_ymd(2021, 1, 1).and_hms(12, 0, 0),
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::and_hms`: use `and_hms_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:684:45
[INFO] [stdout]     |
[INFO] [stdout] 684 |             NaiveDate::from_ymd(2021, 1, 1).and_hms(12, 0, 0),
[INFO] [stdout]     |                                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDate::from_ymd`: use `from_ymd_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:696:24
[INFO] [stdout]     |
[INFO] [stdout] 696 |             NaiveDate::from_ymd(2020, 9, 14).and_hms(15, 36, 27),
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::and_hms`: use `and_hms_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:696:46
[INFO] [stdout]     |
[INFO] [stdout] 696 |             NaiveDate::from_ymd(2020, 9, 14).and_hms(15, 36, 27),
[INFO] [stdout]     |                                              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gray`
[INFO] [stdout]    --> src/browser/twitter/mod.rs:147:36
[INFO] [stdout]     |
[INFO] [stdout] 147 |         .and_then(|((left, right), gray)| {
[INFO] [stdout]     |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_gray`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `upper_edge` is never read
[INFO] [stdout]    --> src/browser/twitter/mod.rs:148:34
[INFO] [stdout]     |
[INFO] [stdout] 148 |             let mut upper_edge = None;
[INFO] [stdout]     |                                  ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 189 |             upper_edge = Some(text_base + (i - text_base) / 2);
[INFO] [stdout]     |             -------------------------------------------------- `upper_edge` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gray`
[INFO] [stdout]    --> src/browser/twitter/mod.rs:147:36
[INFO] [stdout]     |
[INFO] [stdout] 147 |         .and_then(|((left, right), gray)| {
[INFO] [stdout]     |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_gray`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `upper_edge` is never read
[INFO] [stdout]    --> src/browser/twitter/mod.rs:148:34
[INFO] [stdout]     |
[INFO] [stdout] 148 |             let mut upper_edge = None;
[INFO] [stdout]     |                                  ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 189 |             upper_edge = Some(text_base + (i - text_base) / 2);
[INFO] [stdout]     |             -------------------------------------------------- `upper_edge` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/browser/scroller.rs:19:24
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn advance(client: &mut Client) -> BoxFuture<Result<(), Self::Err>> {
[INFO] [stdout]    |                        ^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn advance(client: &mut Client) -> BoxFuture<'_, Result<(), Self::Err>> {
[INFO] [stdout]    |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/browser/scroller.rs:19:24
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn advance(client: &mut Client) -> BoxFuture<Result<(), Self::Err>> {
[INFO] [stdout]    |                        ^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn advance(client: &mut Client) -> BoxFuture<'_, Result<(), Self::Err>> {
[INFO] [stdout]    |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Signal`
[INFO] [stdout]   --> src/bin/cdxdl.rs:62:43
[INFO] [stdout]    |
[INFO] [stdout] 62 |         use tokio::signal::unix::{signal, Signal, SignalKind};
[INFO] [stdout]    |                                           ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `itertools::Itertools::group_by`: Use .chunk_by() instead
[INFO] [stdout]   --> src/bin/report.rs:76:18
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 .group_by(|(t, _)| t.id)
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `screen_name`
[INFO] [stdout]    --> src/bin/wbmd.rs:211:68
[INFO] [stdout]     |
[INFO] [stdout] 211 |                         |(twitter_id, twitter_ts, user_twitter_id, screen_name),
[INFO] [stdout]     |                                                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_screen_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_screen_name`
[INFO] [stdout]    --> src/bin/wbmd.rs:216:29
[INFO] [stdout]     |
[INFO] [stdout] 216 | ...                   reply_screen_name,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_screen_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `digest`
[INFO] [stdout]    --> src/bin/wbmd.rs:153:25
[INFO] [stdout]     |
[INFO] [stdout] 153 |             for (tweet, digest) in results {
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_digest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Signal`
[INFO] [stdout]   --> src/bin/cdxdl.rs:62:43
[INFO] [stdout]    |
[INFO] [stdout] 62 |         use tokio::signal::unix::{signal, Signal, SignalKind};
[INFO] [stdout]    |                                           ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `fantoccini::Client::wait_for`: Prefer client.wait() or while !is_ready(self).await? {}.
[INFO] [stdout]   --> src/bin/twblocks.rs:18:10
[INFO] [stdout]    |
[INFO] [stdout] 18 |         .wait_for(move |c| {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `itertools::Itertools::group_by`: Use .chunk_by() instead
[INFO] [stdout]    --> src/bin/twcli.rs:105:57
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 for (id, group) in &results.into_iter().group_by(|result| result.id) {
[INFO] [stdout]     |                                                         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/twblocks.rs:19:17
[INFO] [stdout]    |
[INFO] [stdout] 19 |             let mut cc = c.clone();
[INFO] [stdout]    |                 ----^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/twblocks.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let mut account_list = client
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Signal`
[INFO] [stdout]    --> src/bin/twcc.rs:803:43
[INFO] [stdout]     |
[INFO] [stdout] 803 |         use tokio::signal::unix::{signal, Signal, SignalKind};
[INFO] [stdout]     |                                           ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `screen_name`
[INFO] [stdout]    --> src/bin/wbmd.rs:211:68
[INFO] [stdout]     |
[INFO] [stdout] 211 |                         |(twitter_id, twitter_ts, user_twitter_id, screen_name),
[INFO] [stdout]     |                                                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_screen_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_screen_name`
[INFO] [stdout]    --> src/bin/wbmd.rs:216:29
[INFO] [stdout]     |
[INFO] [stdout] 216 | ...                   reply_screen_name,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_screen_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `digest`
[INFO] [stdout]    --> src/bin/wbmd.rs:153:25
[INFO] [stdout]     |
[INFO] [stdout] 153 |             for (tweet, digest) in results {
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_digest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `itertools::Itertools::group_by`: Use .chunk_by() instead
[INFO] [stdout]    --> src/bin/twcli.rs:105:57
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 for (id, group) in &results.into_iter().group_by(|result| result.id) {
[INFO] [stdout]     |                                                         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `itertools::Itertools::group_by`: Use .chunk_by() instead
[INFO] [stdout]    --> src/bin/twcc.rs:469:45
[INFO] [stdout]     |
[INFO] [stdout] 469 |             let results = items.into_iter().group_by(|item| item.url.clone());
[INFO] [stdout]     |                                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `itertools::Itertools::group_by`: Use .chunk_by() instead
[INFO] [stdout]   --> src/bin/report.rs:76:18
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 .group_by(|(t, _)| t.id)
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_contents_gz` is never used
[INFO] [stdout]    --> src/bin/wbstore.rs:271:4
[INFO] [stdout]     |
[INFO] [stdout] 271 | fn save_contents_gz(item: &Item, base: &str, content: &[u8]) -> Result<(), Error> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 47s
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr] note: Switching to Edition 2021 will enable the use of the version 2 feature resolver in Cargo.
[INFO] [stderr] This may cause some dependencies to be built with fewer features enabled than previously.
[INFO] [stderr] More information about the resolver changes may be found at https://doc.rust-lang.org/nightly/edition-guide/rust-2021/default-cargo-resolver.html
[INFO] [stderr] When building the following dependencies, the given features will no longer be used:
[INFO] [stderr] 
[INFO] [stderr]   getrandom v0.3.4 removed features: std
[INFO] [stderr]   phf_shared v0.10.0 removed features: default
[INFO] [stderr]   rand v0.8.5 removed features: small_rng
[INFO] [stderr]   tokio v1.48.0 removed features: windows-sys
[INFO] [stderr]   zerocopy v0.8.31 (as host dependency) removed features: derive, zerocopy-derive
[INFO] [stderr] 
[INFO] [stderr]     Checking cancel-culture v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/wbm/store.rs (4 fixes)
[INFO] [stderr]        Fixed src/wbm/valid.rs (3 fixes)
[INFO] [stderr]        Fixed src/wbm/pacer.rs (1 fix)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/browser/twitter/mod.rs:21:10
[INFO] [stdout]     |
[INFO] [stdout]  17 |     let heading = client.wait().forever().for_element(HEADING_LOC).await?;
[INFO] [stdout]     |         -------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `heading` calls a custom destructor
[INFO] [stdout]     |         `heading` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  21 |         .await?
[INFO] [stdout]     |          ^^^^^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |          up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  22 |         .map_or(true, |v| v != "error-detail"))
[INFO] [stdout]  23 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `heading` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/browser/twitter/mod.rs:50:26
[INFO] [stdout]     |
[INFO] [stdout]  34 |     let username_input = client
[INFO] [stdout]     |         --------------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `username_input` calls a custom destructor
[INFO] [stdout]     |         `username_input` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  41 |     let password_input = client
[INFO] [stdout]     |         --------------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `password_input` calls a custom destructor
[INFO] [stdout]     |         `password_input` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  50 |     is_logged_in(client).await
[INFO] [stdout]     |                          ^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                          up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  51 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `username_input` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `password_input` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/wbm/store.rs:318:12
[INFO] [stdout]     |
[INFO] [stdout] 282 |         let contents = self.contents.read().await;
[INFO] [stdout]     |             --------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `contents` calls a custom destructor
[INFO] [stdout]     |             `contents` will be dropped later as of Edition 2024
[INFO] [stdout] 283 |         let result = Mutex::new(vec![]);
[INFO] [stdout]     |             ------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `result` calls a custom destructor
[INFO] [stdout]     |             `result` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 318 |         Ok(result.lock().await.clone())
[INFO] [stdout]     |            ^^^^^^^^^^^^^^-----
[INFO] [stdout]     |            |             |
[INFO] [stdout]     |            |             this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |            |             up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |            up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 319 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-locks-0.7.1/src/mutex.rs:24:1
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl<T: ?Sized> Drop for MutexGuard<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-locks-0.7.1/src/mutex.rs:56:1
[INFO] [stdout]     |
[INFO] [stdout]  56 | impl<T: ?Sized> Drop for MutexFut<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `contents` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-locks-0.7.1/src/rwlock.rs:32:1
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl<T: ?Sized> Drop for RwLockReadGuard<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `result` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-channel-0.3.31/src/oneshot.rs:387:1
[INFO] [stdout]     |
[INFO] [stdout] 387 | impl<T> Drop for Sender<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/wbm/store.rs:318:26
[INFO] [stdout]     |
[INFO] [stdout] 282 |         let contents = self.contents.read().await;
[INFO] [stdout]     |             --------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `contents` calls a custom destructor
[INFO] [stdout]     |             `contents` will be dropped later as of Edition 2024
[INFO] [stdout] 283 |         let result = Mutex::new(vec![]);
[INFO] [stdout]     |             ------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `result` calls a custom destructor
[INFO] [stdout]     |             `result` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 318 |         Ok(result.lock().await.clone())
[INFO] [stdout]     |                          ^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                          up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 319 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-locks-0.7.1/src/mutex.rs:56:1
[INFO] [stdout]     |
[INFO] [stdout]  56 | impl<T: ?Sized> Drop for MutexFut<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `contents` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-locks-0.7.1/src/rwlock.rs:32:1
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl<T: ?Sized> Drop for RwLockReadGuard<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `result` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-channel-0.3.31/src/oneshot.rs:387:1
[INFO] [stdout]     |
[INFO] [stdout] 387 | impl<T> Drop for Sender<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/wbm/store.rs:522:14
[INFO] [stdout]     |
[INFO] [stdout] 511 |         let contents = self.contents.read().await;
[INFO] [stdout]     |             --------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `contents` calls a custom destructor
[INFO] [stdout]     |             `contents` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 522 |             .await
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |              up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 523 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `contents` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-locks-0.7.1/src/rwlock.rs:32:1
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl<T: ?Sized> Drop for RwLockReadGuard<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/wbm/tweet/db.rs:294:19
[INFO] [stdout]     |
[INFO] [stdout] 294 |               match select.query_row(params![SQLiteId(*id)], |row| {
[INFO] [stdout]     |  ___________________^
[INFO] [stdout] 295 | |                 let parent_twitter_id = row.get::<usize, i64>(0)? as u64;
[INFO] [stdout] 296 | |                 let ts: SQLiteDateTime = row.get(1)?;
[INFO] [stdout] 297 | |                 let user_twitter_id = row.get::<usize, i64>(2)? as u64;
[INFO] [stdout] ...   |
[INFO] [stdout] 318 | |                 ))
[INFO] [stdout] 319 | |             }) {
[INFO] [stdout]     | |              ^
[INFO] [stdout]     | |              |
[INFO] [stdout]     | |______________this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 320 |                   Ok(pair) => result.push(pair),
[INFO] [stdout] 321 |                   Err(error) => log::error!("Error for {}: {:?}", id, error),
[INFO] [stdout]     |                       -----
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       `error` calls a custom destructor
[INFO] [stdout]     |                       `error` will be dropped later as of Edition 2024
[INFO] [stdout] 322 |               }
[INFO] [stdout] 323 |           }
[INFO] [stdout]     |           - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `error` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/wbm/tweet/db.rs:337:19
[INFO] [stdout]     |
[INFO] [stdout] 337 |               match select.query_and_then(params![SQLiteId(*id)], |row| {
[INFO] [stdout]     |  ___________________^
[INFO] [stdout] 338 | |                 let parent_twitter_id = row.get::<usize, i64>(0)? as u64;
[INFO] [stdout] 339 | |                 let ts: SQLiteDateTime = row.get(1)?;
[INFO] [stdout] 340 | |                 let user_twitter_id = row.get::<usize, i64>(2)? as u64;
[INFO] [stdout] ...   |
[INFO] [stdout] 361 | |                 ))
[INFO] [stdout] 362 | |             }) {
[INFO] [stdout]     | |              ^
[INFO] [stdout]     | |              |
[INFO] [stdout]     | |______________this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 363 |                   Ok(pairs) => result.extend(
[INFO] [stdout] 364 | /                     pairs
[INFO] [stdout] 365 | |                         .into_iter()
[INFO] [stdout] 366 | |                         .collect::<Result<Vec<_>, TweetStoreError>>()?,
[INFO] [stdout]     | |                                                                      -
[INFO] [stdout]     | |______________________________________________________________________|
[INFO] [stdout]     | |______________________________________________________________________this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                                                        `#1` will be dropped later as of Edition 2024
[INFO] [stdout] 367 |                   ),
[INFO] [stdout] 368 | |                 Err(error) => log::error!("Error for {}: {:?}", id, error),
[INFO] [stdout]     | |                     -----
[INFO] [stdout]     | |                     |
[INFO] [stdout]     | |                     `error` calls a custom destructor
[INFO] [stdout]     | |                     `error` will be dropped later as of Edition 2024
[INFO] [stdout] 369 | |             }
[INFO] [stdout] 370 | |         }
[INFO] [stdout]     | |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/rusqlite-0.37.0/src/row.rs:109:1
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl Drop for Rows<'_> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `error` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/wbm/tweet/db.rs:583:23
[INFO] [stdout]     |
[INFO] [stdout] 554 |                 let pairs: Vec<(String, String)> = get_user_names
[INFO] [stdout]     |    ________________________________________________-
[INFO] [stdout]     |  _|________________________________________________|
[INFO] [stdout] 555 | | |                 .query_map(params![SQLiteId(*id)], |row| {
[INFO] [stdout] 556 | | |                     let screen_name: String = row.get(0)?;
[INFO] [stdout] 557 | | |                     let name: String = row.get(1)?;
[INFO] [stdout] 558 | | |                     Ok((screen_name, name))
[INFO] [stdout] 559 | | |                 })?
[INFO] [stdout]     | | |                   -
[INFO] [stdout]     | | |                   |
[INFO] [stdout]     | | |___________________this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     | |                     `#2` will be dropped later as of Edition 2024
[INFO] [stdout] 560 | |                   .collect::<Result<Vec<_>, _>>()?;
[INFO] [stdout]     | |                                                  -
[INFO] [stdout]     | |                                                  |
[INFO] [stdout]     | |__________________________________________________this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                                    `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 583 |                     match get_user_known_active_range.query_row(
[INFO] [stdout]     |    _______________________^
[INFO] [stdout]     |   |_______________________|
[INFO] [stdout] 584 |   |                     params![SQLiteId(*id), screen_name.clone()],
[INFO] [stdout] 585 |   |                     |row| {
[INFO] [stdout] 586 |   |                         let tweet_count = row.get(0)?;
[INFO] [stdout] ...     |
[INFO] [stdout] 598 |   |                     },
[INFO] [stdout] 599 |   |                 ) {
[INFO] [stdout]     |   |                 ^
[INFO] [stdout]     |   |_________________|
[INFO] [stdout]     |   |_________________this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                     up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 600 |   |                     Err(error) => {
[INFO] [stdout]     |   |                         -----
[INFO] [stdout]     |   |                         |
[INFO] [stdout]     |   |                         `error` calls a custom destructor
[INFO] [stdout]     |   |                         `error` will be dropped later as of Edition 2024
[INFO] [stdout] ...     |
[INFO] [stdout] 610 |   |             }
[INFO] [stdout]     |   |             - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/rusqlite-0.37.0/src/row.rs:109:1
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl Drop for Rows<'_> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `error` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/browser/scroller.rs:22:47
[INFO] [stdout]     |
[INFO] [stdout]  21 |             let element = client.active_element().await?;
[INFO] [stdout]     |                 -------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `element` calls a custom destructor
[INFO] [stdout]     |                 `element` will be dropped later as of Edition 2024
[INFO] [stdout]  22 |             element.send_keys(" ").err_into().await
[INFO] [stdout]     |                                               ^^^^^
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                               up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  23 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `element` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/browser/twitter/search.rs:112:40
[INFO] [stdout]     |
[INFO] [stdout] 111 |             for element in elements {
[INFO] [stdout]     |                 -------    --------
[INFO] [stdout]     |                 |          |
[INFO] [stdout]     |                 |          this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                 |          `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                 `element` calls a custom destructor
[INFO] [stdout]     |                 `element` will be dropped later as of Edition 2024
[INFO] [stdout] 112 |                 if let Ok(Some(url)) = element.attr("href").await {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                                        |                    |
[INFO] [stdout]     |                                        |                    this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                                        |                    up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                        |                    this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                        |                    `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                        this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                        up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                        `__awaitee` calls a custom destructor
[INFO] [stdout]     |                                        `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 119 |             }
[INFO] [stdout]     |             - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `element` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/browser/twitter/mod.rs:21:10
[INFO] [stdout]     |
[INFO] [stdout]  17 |     let heading = client.wait().forever().for_element(HEADING_LOC).await?;
[INFO] [stdout]     |         -------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `heading` calls a custom destructor
[INFO] [stdout]     |         `heading` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  21 |         .await?
[INFO] [stdout]     |          ^^^^^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |          up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  22 |         .map_or(true, |v| v != "error-detail"))
[INFO] [stdout]  23 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `heading` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating src/bin/wbmd.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/browser/twitter/mod.rs:50:26
[INFO] [stdout]     |
[INFO] [stdout]  34 |     let username_input = client
[INFO] [stdout]     |         --------------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `username_input` calls a custom destructor
[INFO] [stdout]     |         `username_input` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  41 |     let password_input = client
[INFO] [stdout]     |         --------------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `password_input` calls a custom destructor
[INFO] [stdout]     |         `password_input` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  50 |     is_logged_in(client).await
[INFO] [stdout]     |                          ^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                          up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  51 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `username_input` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `password_input` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/wbm/store.rs:318:12
[INFO] [stdout]     |
[INFO] [stdout] 282 |         let contents = self.contents.read().await;
[INFO] [stdout]     |             --------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `contents` calls a custom destructor
[INFO] [stdout]     |             `contents` will be dropped later as of Edition 2024
[INFO] [stdout] 283 |         let result = Mutex::new(vec![]);
[INFO] [stdout]     |             ------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `result` calls a custom destructor
[INFO] [stdout]     |             `result` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 318 |         Ok(result.lock().await.clone())
[INFO] [stdout]     |            ^^^^^^^^^^^^^^-----
[INFO] [stdout]     |            |             |
[INFO] [stdout]     |            |             this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |            |             up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |            up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 319 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-locks-0.7.1/src/mutex.rs:24:1
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl<T: ?Sized> Drop for MutexGuard<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-locks-0.7.1/src/mutex.rs:56:1
[INFO] [stdout]     |
[INFO] [stdout]  56 | impl<T: ?Sized> Drop for MutexFut<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `contents` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-locks-0.7.1/src/rwlock.rs:32:1
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl<T: ?Sized> Drop for RwLockReadGuard<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `result` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-channel-0.3.31/src/oneshot.rs:387:1
[INFO] [stdout]     |
[INFO] [stdout] 387 | impl<T> Drop for Sender<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/wbm/store.rs:318:26
[INFO] [stdout]     |
[INFO] [stdout] 282 |         let contents = self.contents.read().await;
[INFO] [stdout]     |             --------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `contents` calls a custom destructor
[INFO] [stdout]     |             `contents` will be dropped later as of Edition 2024
[INFO] [stdout] 283 |         let result = Mutex::new(vec![]);
[INFO] [stdout]     |             ------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `result` calls a custom destructor
[INFO] [stdout]     |             `result` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 318 |         Ok(result.lock().await.clone())
[INFO] [stdout]     |                          ^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                          up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 319 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-locks-0.7.1/src/mutex.rs:56:1
[INFO] [stdout]     |
[INFO] [stdout]  56 | impl<T: ?Sized> Drop for MutexFut<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `contents` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-locks-0.7.1/src/rwlock.rs:32:1
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl<T: ?Sized> Drop for RwLockReadGuard<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `result` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-channel-0.3.31/src/oneshot.rs:387:1
[INFO] [stdout]     |
[INFO] [stdout] 387 | impl<T> Drop for Sender<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/wbm/store.rs:522:14
[INFO] [stdout]     |
[INFO] [stdout] 511 |         let contents = self.contents.read().await;
[INFO] [stdout]     |             --------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `contents` calls a custom destructor
[INFO] [stdout]     |             `contents` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 522 |             .await
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |              up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 523 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `contents` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-locks-0.7.1/src/rwlock.rs:32:1
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl<T: ?Sized> Drop for RwLockReadGuard<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/wbm/tweet/db.rs:294:19
[INFO] [stdout]     |
[INFO] [stdout] 294 |               match select.query_row(params![SQLiteId(*id)], |row| {
[INFO] [stdout]     |  ___________________^
[INFO] [stdout] 295 | |                 let parent_twitter_id = row.get::<usize, i64>(0)? as u64;
[INFO] [stdout] 296 | |                 let ts: SQLiteDateTime = row.get(1)?;
[INFO] [stdout] 297 | |                 let user_twitter_id = row.get::<usize, i64>(2)? as u64;
[INFO] [stdout] ...   |
[INFO] [stdout] 318 | |                 ))
[INFO] [stdout] 319 | |             }) {
[INFO] [stdout]     | |              ^
[INFO] [stdout]     | |              |
[INFO] [stdout]     | |______________this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 320 |                   Ok(pair) => result.push(pair),
[INFO] [stdout] 321 |                   Err(error) => log::error!("Error for {}: {:?}", id, error),
[INFO] [stdout]     |                       -----
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       `error` calls a custom destructor
[INFO] [stdout]     |                       `error` will be dropped later as of Edition 2024
[INFO] [stdout] 322 |               }
[INFO] [stdout] 323 |           }
[INFO] [stdout]     |           - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `error` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/wbm/tweet/db.rs:337:19
[INFO] [stdout]     |
[INFO] [stdout] 337 |               match select.query_and_then(params![SQLiteId(*id)], |row| {
[INFO] [stdout]     |  ___________________^
[INFO] [stdout] 338 | |                 let parent_twitter_id = row.get::<usize, i64>(0)? as u64;
[INFO] [stdout] 339 | |                 let ts: SQLiteDateTime = row.get(1)?;
[INFO] [stdout] 340 | |                 let user_twitter_id = row.get::<usize, i64>(2)? as u64;
[INFO] [stdout] ...   |
[INFO] [stdout] 361 | |                 ))
[INFO] [stdout] 362 | |             }) {
[INFO] [stdout]     | |              ^
[INFO] [stdout]     | |              |
[INFO] [stdout]     | |______________this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 363 |                   Ok(pairs) => result.extend(
[INFO] [stdout] 364 | /                     pairs
[INFO] [stdout] 365 | |                         .into_iter()
[INFO] [stdout] 366 | |                         .collect::<Result<Vec<_>, TweetStoreError>>()?,
[INFO] [stdout]     | |                                                                      -
[INFO] [stdout]     | |______________________________________________________________________|
[INFO] [stdout]     | |______________________________________________________________________this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                                                        `#1` will be dropped later as of Edition 2024
[INFO] [stdout] 367 |                   ),
[INFO] [stdout] 368 | |                 Err(error) => log::error!("Error for {}: {:?}", id, error),
[INFO] [stdout]     | |                     -----
[INFO] [stdout]     | |                     |
[INFO] [stdout]     | |                     `error` calls a custom destructor
[INFO] [stdout]     | |                     `error` will be dropped later as of Edition 2024
[INFO] [stdout] 369 | |             }
[INFO] [stdout] 370 | |         }
[INFO] [stdout]     | |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/rusqlite-0.37.0/src/row.rs:109:1
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl Drop for Rows<'_> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `error` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/wbm/tweet/db.rs:583:23
[INFO] [stdout]     |
[INFO] [stdout] 554 |                 let pairs: Vec<(String, String)> = get_user_names
[INFO] [stdout]     |    ________________________________________________-
[INFO] [stdout]     |  _|________________________________________________|
[INFO] [stdout] 555 | | |                 .query_map(params![SQLiteId(*id)], |row| {
[INFO] [stdout] 556 | | |                     let screen_name: String = row.get(0)?;
[INFO] [stdout] 557 | | |                     let name: String = row.get(1)?;
[INFO] [stdout] 558 | | |                     Ok((screen_name, name))
[INFO] [stdout] 559 | | |                 })?
[INFO] [stdout]     | | |                   -
[INFO] [stdout]     | | |                   |
[INFO] [stdout]     | | |___________________this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     | |                     `#2` will be dropped later as of Edition 2024
[INFO] [stdout] 560 | |                   .collect::<Result<Vec<_>, _>>()?;
[INFO] [stdout]     | |                                                  -
[INFO] [stdout]     | |                                                  |
[INFO] [stdout]     | |__________________________________________________this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                                    `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 583 |                     match get_user_known_active_range.query_row(
[INFO] [stdout]     |    _______________________^
[INFO] [stdout]     |   |_______________________|
[INFO] [stdout] 584 |   |                     params![SQLiteId(*id), screen_name.clone()],
[INFO] [stdout] 585 |   |                     |row| {
[INFO] [stdout] 586 |   |                         let tweet_count = row.get(0)?;
[INFO] [stdout] ...     |
[INFO] [stdout] 598 |   |                     },
[INFO] [stdout] 599 |   |                 ) {
[INFO] [stdout]     |   |                 ^
[INFO] [stdout]     |   |_________________|
[INFO] [stdout]     |   |_________________this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                     up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 600 |   |                     Err(error) => {
[INFO] [stdout]     |   |                         -----
[INFO] [stdout]     |   |                         |
[INFO] [stdout]     |   |                         `error` calls a custom destructor
[INFO] [stdout]     |   |                         `error` will be dropped later as of Edition 2024
[INFO] [stdout] ...     |
[INFO] [stdout] 610 |   |             }
[INFO] [stdout]     |   |             - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/rusqlite-0.37.0/src/row.rs:109:1
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl Drop for Rows<'_> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `error` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/browser/scroller.rs:22:47
[INFO] [stdout]     |
[INFO] [stdout]  21 |             let element = client.active_element().await?;
[INFO] [stdout]     |                 -------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `element` calls a custom destructor
[INFO] [stdout]     |                 `element` will be dropped later as of Edition 2024
[INFO] [stdout]  22 |             element.send_keys(" ").err_into().await
[INFO] [stdout]     |                                               ^^^^^
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                               up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  23 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `element` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/browser/twitter/search.rs:112:40
[INFO] [stdout]     |
[INFO] [stdout] 111 |             for element in elements {
[INFO] [stdout]     |                 -------    --------
[INFO] [stdout]     |                 |          |
[INFO] [stdout]     |                 |          this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                 |          `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                 `element` calls a custom destructor
[INFO] [stdout]     |                 `element` will be dropped later as of Edition 2024
[INFO] [stdout] 112 |                 if let Ok(Some(url)) = element.attr("href").await {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                                        |                    |
[INFO] [stdout]     |                                        |                    this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                                        |                    up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                        |                    this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                        |                    `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                        this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                        up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                        `__awaitee` calls a custom destructor
[INFO] [stdout]     |                                        `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 119 |             }
[INFO] [stdout]     |             - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `element` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating src/bin/rtcounts.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/availability.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/link.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/cdxdl.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/twshoot.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/twcli.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/twcc.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/bin/twcc.rs:265:18
[INFO] [stdout]     |
[INFO] [stdout] 236 |             let mut handle = stdin.lock();
[INFO] [stdout]     |                 ----------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `handle` calls a custom destructor
[INFO] [stdout]     |                 `handle` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 265 |                 .await
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                  up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 266 |                 .map_err(Error::from)
[INFO] [stdout] 267 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `handle` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/sync/poison/mutex.rs:741:0
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating src/bin/twblocks.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/bin/twcc.rs:648:43
[INFO] [stdout]     |
[INFO] [stdout] 635 | ...                   Some(ref store) => match store.read(&item.digest) {
[INFO] [stdout]     |                                                ------------------------
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                                `#1` will be dropped later as of Edition 2024
[INFO] [stdout] 636 | ...                       Ok(content) => content,
[INFO] [stdout] 637 | ...                       Err(_error) => {
[INFO] [stdout]     |                               ------
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               `_error` calls a custom destructor
[INFO] [stdout]     |                               `_error` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 648 | ...                       match downloader.download_item(item).await {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                                 |                              |
[INFO] [stdout]     |                                 |                              this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                                 |                              up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                 |                              this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                 |                              `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                 this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                 up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                 `__awaitee` calls a custom destructor
[INFO] [stdout]     |                                 `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] 649 | ...                           Ok(bytes) => Some(match String::from_utf8_lossy(&bytes) {
[INFO] [stdout]     |                                  -----
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  `bytes` calls a custom destructor
[INFO] [stdout]     |                                  `bytes` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 665 | ...                   }
[INFO] [stdout]     |                       - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] 666 | ...               } {
[INFO] [stdout] 667 | ...                   let html = scraper::Html::parse_document(&content);
[INFO] [stdout]     |                           ----
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           `html` calls a custom destructor
[INFO] [stdout]     |                           `html` will be dropped later as of Edition 2024
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.0/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/csv-1.4.0/src/writer.rs:589:1
[INFO] [stdout]     |
[INFO] [stdout] 589 | impl<W: io::Write> Drop for Writer<W> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `_error` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `_error` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/csv-1.4.0/src/writer.rs:589:1
[INFO] [stdout]     |
[INFO] [stdout] 589 | impl<W: io::Write> Drop for Writer<W> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.0/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `bytes` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.0/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `html` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tendril-0.4.3/src/tendril.rs:239:1
[INFO] [stdout]     |
[INFO] [stdout] 239 | / impl<F, A> Drop for Tendril<F, A>
[INFO] [stdout] 240 | | where
[INFO] [stdout] 241 | |     F: fmt::Format,
[INFO] [stdout] 242 | |     A: Atomicity,
[INFO] [stdout]     | |_________________^
[INFO] [stdout] note: `html` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/string_cache-0.8.9/src/atom.rs:257:1
[INFO] [stdout]     |
[INFO] [stdout] 257 | impl<Static> Drop for Atom<Static> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `html` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/string_cache-0.8.9/src/atom.rs:257:1
[INFO] [stdout]     |
[INFO] [stdout] 257 | impl<Static> Drop for Atom<Static> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `html` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/string_cache-0.8.9/src/atom.rs:257:1
[INFO] [stdout]     |
[INFO] [stdout] 257 | impl<Static> Drop for Atom<Static> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/bin/twblocks.rs:47:18
[INFO] [stdout]     |
[INFO] [stdout]  44 |             let link = item.find(ACCOUNT_LINK_LOC).await?;
[INFO] [stdout]     |                 ----
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `link` calls a custom destructor
[INFO] [stdout]     |                 `link` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  47 |                 .await?
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                  up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  57 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `link` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating src/bin/wbstore.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/bin/wbstore.rs:133:43
[INFO] [stdout]     |
[INFO] [stdout] 132 | ...                       let mut file = File::open(file_entry.path())?;
[INFO] [stdout]     |                               --------
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               `file` calls a custom destructor
[INFO] [stdout]     |                               `file` will be dropped later as of Edition 2024
[INFO] [stdout] 133 | ...                       match Store::compute_digest_gz(&mut file) {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                 up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 152 | ...                   } else {
[INFO] [stdout]     |                       - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/csv-1.4.0/src/writer.rs:589:1
[INFO] [stdout]     |
[INFO] [stdout] 589 | impl<W: io::Write> Drop for Writer<W> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `file` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating tests/browser.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/details.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/wbmc.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/canonical.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/wbparse.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/report.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/wbsave.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/wbsearch.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/bin/wbsearch.rs:83:30
[INFO] [stdout]     |
[INFO] [stdout]  82 |     let next = client.wait().forever().for_element(NEXT_LOC).await?;
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `next` calls a custom destructor
[INFO] [stdout]     |         `next` will be dropped later as of Edition 2024
[INFO] [stdout]  83 |     match next.attr("class").await? {
[INFO] [stdout]     |                              ^^^^^
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                              up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  93 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `next` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating src/bin/twsearch.rs from 2021 edition to 2024
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 01s
[INFO] [stderr] crater-edition-check: cancel-culture v0.1.0 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]     Checking cancel-culture v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated function `itertools::unfold`: Use [std::iter::from_fn](https://doc.rust-lang.org/std/iter/fn.from_fn.html) instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:24:33
[INFO] [stdout]    |
[INFO] [stdout] 24 |             Box::new(itertools::unfold(from, move |state| {
[INFO] [stdout]    |                                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `itertools::unfold`: Use [std::iter::from_fn](https://doc.rust-lang.org/std/iter/fn.from_fn.html) instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:33:33
[INFO] [stdout]    |
[INFO] [stdout] 33 |             Box::new(itertools::unfold(from, move |state| {
[INFO] [stdout]    |                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::succ`: use `succ_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/search.rs:64:61
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     Self::new(&self.screen_name, &day, &day.succ())
[INFO] [stdout]    |                                                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::DateTime::<Tz>::date`: Use `date_naive()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:50:44
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let user_created = user.created_at.date().naive_utc();
[INFO] [stdout]    |                                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `itertools::unfold`: Use [std::iter::from_fn](https://doc.rust-lang.org/std/iter/fn.from_fn.html) instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:24:33
[INFO] [stdout]    |
[INFO] [stdout] 24 |             Box::new(itertools::unfold(from, move |state| {
[INFO] [stdout]    |                                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `itertools::unfold`: Use [std::iter::from_fn](https://doc.rust-lang.org/std/iter/fn.from_fn.html) instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:33:33
[INFO] [stdout]    |
[INFO] [stdout] 33 |             Box::new(itertools::unfold(from, move |state| {
[INFO] [stdout]    |                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::DateTime::<Tz>::date`: Use `date_naive()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 |             .date()
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::succ`: use `succ_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:78:27
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 &chunk[0].succ(),
[INFO] [stdout]    |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::succ`: use `succ_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/search.rs:64:61
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     Self::new(&self.screen_name, &day, &day.succ())
[INFO] [stdout]    |                                                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::DateTime::<Tz>::date`: Use `date_naive()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:50:44
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let user_created = user.created_at.date().naive_utc();
[INFO] [stdout]    |                                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::DateTime::<Tz>::date`: Use `date_naive()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 |             .date()
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::succ`: use `succ_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:78:27
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 &chunk[0].succ(),
[INFO] [stdout]    |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/parser.rs:58:17
[INFO] [stdout]    |
[INFO] [stdout] 58 |             Utc.timestamp_millis(timestamp),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/parser.rs:58:17
[INFO] [stdout]    |
[INFO] [stdout] 58 |             Utc.timestamp_millis(timestamp),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::succ`: use `succ_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:25:32
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 *state = state.succ();
[INFO] [stdout]    |                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::pred`: use `pred_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:34:32
[INFO] [stdout]    |
[INFO] [stdout] 34 |                 *state = state.pred();
[INFO] [stdout]    |                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/util/sqlite.rs:27:31
[INFO] [stdout]    |
[INFO] [stdout] 27 |         Ok(SQLiteDateTime(Utc.timestamp_millis(ts)))
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]    --> src/browser/twitter/parser.rs:448:17
[INFO] [stdout]     |
[INFO] [stdout] 448 |             Utc.timestamp_millis(1501184729657),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::succ`: use `succ_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:25:32
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 *state = state.succ();
[INFO] [stdout]    |                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::pred`: use `pred_opt()` instead
[INFO] [stdout]   --> src/browser/twitter/tweet_lister.rs:34:32
[INFO] [stdout]    |
[INFO] [stdout] 34 |                 *state = state.pred();
[INFO] [stdout]    |                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/util/sqlite.rs:27:31
[INFO] [stdout]    |
[INFO] [stdout] 27 |         Ok(SQLiteDateTime(Utc.timestamp_millis(ts)))
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDate::from_ymd`: use `from_ymd_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:662:24
[INFO] [stdout]     |
[INFO] [stdout] 662 |             NaiveDate::from_ymd(2019, 9, 16).and_hms(23, 32, 35),
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::and_hms`: use `and_hms_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:662:46
[INFO] [stdout]     |
[INFO] [stdout] 662 |             NaiveDate::from_ymd(2019, 9, 16).and_hms(23, 32, 35),
[INFO] [stdout]     |                                              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDate::from_ymd`: use `from_ymd_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:673:24
[INFO] [stdout]     |
[INFO] [stdout] 673 |             NaiveDate::from_ymd(2019, 11, 13).and_hms(17, 6, 29),
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::and_hms`: use `and_hms_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:673:47
[INFO] [stdout]     |
[INFO] [stdout] 673 |             NaiveDate::from_ymd(2019, 11, 13).and_hms(17, 6, 29),
[INFO] [stdout]     |                                               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDate::from_ymd`: use `from_ymd_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:684:24
[INFO] [stdout]     |
[INFO] [stdout] 684 |             NaiveDate::from_ymd(2021, 1, 1).and_hms(12, 0, 0),
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::and_hms`: use `and_hms_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:684:45
[INFO] [stdout]     |
[INFO] [stdout] 684 |             NaiveDate::from_ymd(2021, 1, 1).and_hms(12, 0, 0),
[INFO] [stdout]     |                                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDate::from_ymd`: use `from_ymd_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:696:24
[INFO] [stdout]     |
[INFO] [stdout] 696 |             NaiveDate::from_ymd(2020, 9, 14).and_hms(15, 36, 27),
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDate::and_hms`: use `and_hms_opt()` instead
[INFO] [stdout]    --> src/wbm/store.rs:696:46
[INFO] [stdout]     |
[INFO] [stdout] 696 |             NaiveDate::from_ymd(2020, 9, 14).and_hms(15, 36, 27),
[INFO] [stdout]     |                                              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gray`
[INFO] [stdout]    --> src/browser/twitter/mod.rs:147:36
[INFO] [stdout]     |
[INFO] [stdout] 147 |         .and_then(|((left, right), gray)| {
[INFO] [stdout]     |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_gray`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `upper_edge` is never read
[INFO] [stdout]    --> src/browser/twitter/mod.rs:148:34
[INFO] [stdout]     |
[INFO] [stdout] 148 |             let mut upper_edge = None;
[INFO] [stdout]     |                                  ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 189 |             upper_edge = Some(text_base + (i - text_base) / 2);
[INFO] [stdout]     |             -------------------------------------------------- `upper_edge` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gray`
[INFO] [stdout]    --> src/browser/twitter/mod.rs:147:36
[INFO] [stdout]     |
[INFO] [stdout] 147 |         .and_then(|((left, right), gray)| {
[INFO] [stdout]     |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_gray`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `upper_edge` is never read
[INFO] [stdout]    --> src/browser/twitter/mod.rs:148:34
[INFO] [stdout]     |
[INFO] [stdout] 148 |             let mut upper_edge = None;
[INFO] [stdout]     |                                  ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 189 |             upper_edge = Some(text_base + (i - text_base) / 2);
[INFO] [stdout]     |             -------------------------------------------------- `upper_edge` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/browser/scroller.rs:19:24
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn advance(client: &mut Client) -> BoxFuture<Result<(), Self::Err>> {
[INFO] [stdout]    |                        ^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn advance(client: &mut Client) -> BoxFuture<'_, Result<(), Self::Err>> {
[INFO] [stdout]    |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/browser/scroller.rs:19:24
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn advance(client: &mut Client) -> BoxFuture<Result<(), Self::Err>> {
[INFO] [stdout]    |                        ^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn advance(client: &mut Client) -> BoxFuture<'_, Result<(), Self::Err>> {
[INFO] [stdout]    |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Signal`
[INFO] [stdout]   --> src/bin/cdxdl.rs:62:43
[INFO] [stdout]    |
[INFO] [stdout] 62 |         use tokio::signal::unix::{signal, Signal, SignalKind};
[INFO] [stdout]    |                                           ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Signal`
[INFO] [stdout]   --> src/bin/cdxdl.rs:62:43
[INFO] [stdout]    |
[INFO] [stdout] 62 |         use tokio::signal::unix::{signal, Signal, SignalKind};
[INFO] [stdout]    |                                           ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `fantoccini::Client::wait_for`: Prefer client.wait() or while !is_ready(self).await? {}.
[INFO] [stdout]   --> src/bin/twblocks.rs:18:10
[INFO] [stdout]    |
[INFO] [stdout] 18 |         .wait_for(move |c| {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/twblocks.rs:19:17
[INFO] [stdout]    |
[INFO] [stdout] 19 |             let mut cc = c.clone();
[INFO] [stdout]    |                 ----^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/twblocks.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let mut account_list = client
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `itertools::Itertools::group_by`: Use .chunk_by() instead
[INFO] [stdout]    --> src/bin/twcli.rs:105:57
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 for (id, group) in &results.into_iter().group_by(|result| result.id) {
[INFO] [stdout]     |                                                         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `itertools::Itertools::group_by`: Use .chunk_by() instead
[INFO] [stdout]   --> src/bin/report.rs:76:18
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 .group_by(|(t, _)| t.id)
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `itertools::Itertools::group_by`: Use .chunk_by() instead
[INFO] [stdout]    --> src/bin/twcli.rs:105:57
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 for (id, group) in &results.into_iter().group_by(|result| result.id) {
[INFO] [stdout]     |                                                         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Signal`
[INFO] [stdout]    --> src/bin/twcc.rs:803:43
[INFO] [stdout]     |
[INFO] [stdout] 803 |         use tokio::signal::unix::{signal, Signal, SignalKind};
[INFO] [stdout]     |                                           ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `itertools::Itertools::group_by`: Use .chunk_by() instead
[INFO] [stdout]   --> src/bin/report.rs:76:18
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 .group_by(|(t, _)| t.id)
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `screen_name`
[INFO] [stdout]    --> src/bin/wbmd.rs:211:68
[INFO] [stdout]     |
[INFO] [stdout] 211 |                         |(twitter_id, twitter_ts, user_twitter_id, screen_name),
[INFO] [stdout]     |                                                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_screen_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_screen_name`
[INFO] [stdout]    --> src/bin/wbmd.rs:216:29
[INFO] [stdout]     |
[INFO] [stdout] 216 | ...                   reply_screen_name,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_screen_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `digest`
[INFO] [stdout]    --> src/bin/wbmd.rs:153:25
[INFO] [stdout]     |
[INFO] [stdout] 153 |             for (tweet, digest) in results {
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_digest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `screen_name`
[INFO] [stdout]    --> src/bin/wbmd.rs:211:68
[INFO] [stdout]     |
[INFO] [stdout] 211 |                         |(twitter_id, twitter_ts, user_twitter_id, screen_name),
[INFO] [stdout]     |                                                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_screen_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_screen_name`
[INFO] [stdout]    --> src/bin/wbmd.rs:216:29
[INFO] [stdout]     |
[INFO] [stdout] 216 | ...                   reply_screen_name,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_screen_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `digest`
[INFO] [stdout]    --> src/bin/wbmd.rs:153:25
[INFO] [stdout]     |
[INFO] [stdout] 153 |             for (tweet, digest) in results {
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_digest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `itertools::Itertools::group_by`: Use .chunk_by() instead
[INFO] [stdout]    --> src/bin/twcc.rs:469:45
[INFO] [stdout]     |
[INFO] [stdout] 469 |             let results = items.into_iter().group_by(|item| item.url.clone());
[INFO] [stdout]     |                                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_contents_gz` is never used
[INFO] [stdout]    --> src/bin/wbstore.rs:271:4
[INFO] [stdout]     |
[INFO] [stdout] 271 | fn save_contents_gz(item: &Item, base: &str, content: &[u8]) -> Result<(), Error> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 06s
[INFO] [stderr] crater-edition-check all packages now at latest edition
[INFO] [stderr] crater-edition-check: all finished
[INFO] running `Command { std: "docker" "inspect" "76050ace1e8b4a7df8f3fbf2320d304cf0a06521030d43b159570bfa5ea94334", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "76050ace1e8b4a7df8f3fbf2320d304cf0a06521030d43b159570bfa5ea94334", kill_on_drop: false }`
[INFO] [stdout] 76050ace1e8b4a7df8f3fbf2320d304cf0a06521030d43b159570bfa5ea94334
